# encoding: UTF-8
$LOAD_PATH.unshift File.dirname(__FILE__)
require 'director'
require 'student'
require "yaml"

class School
  attr_accessor :title, :director, :students, :teachers, :classes

  def initialize(title, director)
    @title = title
    @director = director
    @students = []
    @teachers = []
    @classes = []
    @director.school = self
  end
  
  def get_user(login, pass)
    pass = Digest::MD5.hexdigest(pass) 
    if @director.login == login and @director.password == pass
      return @director
    end
    students.each do |student|
      if student.login == login and student.password == pass
        return student
      end
    end
    teachers.each do |teacher|
      if teacher.login == login and teacher.password == pass
        return teacher
      end
    end
    nil
  end
  
  def login_used(login)
    if @director.login == login 
      return true
    end
    students.each do |student|
      if student.login == login
        return true
      end
    end
    teachers.each do |teacher|
      if teacher.login == login
        return true
      end
    end
    false
  end
  
  def class_title_used (title)
    classes.each do |school_class|
      if school_class.title == title
        return true
      end 
    end
    false
  end
  
  def self.create_from_yaml(filename)
    YAML.load_file(filename)
  end
  
  def save_to_yaml(filename)
    File.open(filename, 'w' ) do |out|
      YAML.dump( self, out )
    end
  end
  
=begin
  def add_student(new_student)
    if not new_student.instance_of?(Student)
      raise ArgumentError, "Tik mokiniai gali būti įtraukti į mokyklos mokinių sąrašą"
    end
    @teachers.each do |teacher|
      if teacher.login == new_student.login
        raise ArgumentError, "Mokykla jau turi vartotoją su tokiu login"
      end
    end
    @students.each do |student|
      if student.login == new_student.login
        raise ArgumentError, "Mokykla jau turi vartotoją su tokiu login"
      end
    end
    @students << new_student
    new_student.set_school(self)
    new_student.school_class.add_student(new_student)
  end
  
  def add_teacher(new_teacher)
    if not new_teacher.instance_of?(Teacher)
      raise ArgumentError, "Tik mokytojai gali būti įtraukti į mokyklos mokytojų sąrašą"
    end
    @teachers.each do |teacher|
      if teacher.login == new_teacher.login
        raise ArgumentError, "Mokykla jau turi vartotoją su tokiu login"
      end
    end
    @students.each do |student|
      if student.login == new_teacher.login
        raise ArgumentError, "Mokykla jau turi vartotoją su tokiu login"
      end
    end
    @teachers << new_teacher
    new_teacher.set_school(self)
  end
  
  def add_class(new_class)
    if not new_class.instance_of?(SchoolClass)
      raise ArgumentError, "Tik mokyklos klasės tipo objektai gali būti įtraukiami į mokyklos klasių sąrašą"
    end
    classes.each do |school_class|
      if school_class.master == new_class.master
        raise ArgumentError, "Pridedamos klasės auklėtojas jau vadovauja kitai klasei"
      end
      if school_class.title == new_class.title
        raise ArgumentError, "Mokyklos klasių sąraše jau yra klasė pavadinimu kaip ir pridedama klasė"
      end
    end
    if not teachers.include?(new_class.master)
      raise ArgumentError, "Pridedamos klasės auklėtojo '" + new_class.master.login + "' nėra mokyklos mokytojų sąraše"
    end
    @classes << new_class
  end
  
  def get_user(login)
    if @director.login == login
      return @director
    end
    teachers.each do |t|
      if t.login == login
        return t
       end
    end
    students.each do |s|
      if s.login == login
        return s
       end
    end
    nil
  end
=end
end